package com.it.data_queue;

/**
 * @author: Coke
 * @DateTime: 2023/06/11/11:47
 * 自定义队列接口
 **/
public interface Queue<E> {
    
    /**
     * 向队尾插入值
     *
     * @param value: 待插入值
     * @return boolean 插入成功返回true 插入失败返回false
     * @DateTime: 2023/6/11 11:49
     * @author: Coke
     */
    boolean offer (E value);
    
    /**
     * 从队列头获取值，并移除
     *
     * @return E 如果队列非空返回对头值 否则返回null
     * @DateTime: 2023/6/11 11:50
     * @author: Coke
     */
    E pool ();
    
    /**
     * 从队列头获取值，不移除
     *
     * @return E 如果队列非空返回对头值 否则返回null
     * @DateTime: 2023/6/11 11:51
     * @author: Coke
     */
    E peek ();
    
    /**
     * 检查队列是否为空
     *
     * @return boolean 空返回 true 否则返回false
     * @DateTime: 2023/6/11 11:52
     * @author: Coke
     */
    boolean isEmpty ();
    
    /**
     * 检查队列是否已满
     *
     * @return boolean 满返回true 否则false
     * @DateTime: 2023/6/11 13:07
     * @author: Coke
     */
    boolean isFull ();
}
